import { RoleAction, AnimatType } from "./IEnum";

export interface IAnimation {
  /**数据编号 */
  id: number;
  /**动作类型 */
  actionType: RoleAction;
  /**帧动作名 */
  frameName: string;
  /**关键帧索引-- 触发某个状态特性时数据， 关键帧由  +号分隔  */
  keyFrame: string;
  /**起始帧 */
  start: number;
  /**结束帧 */
  end: number;
  /**是否循环 */
  isLoop: boolean;
  /**获取关键帧集合 */
  getKeyFrame(): Array<number>;
}
export interface IAnimationSource {
  id: number; //模型编号
  /**模型名称 */
  name: string;
  /**包名 lh文件里 模型名称 */
  packName: string;
  /** 蒙皮名*/
  meshName: string;
  /**动画路径 */
  aniPath: string;
  /**模型路径 */
  modelPath: string;
  /**动画类型 */
  animatType: AnimatType;
  /**数据转换动画 */
  getAnimation(): IAnimationControl;
}
/**动画控制器 */
export interface IAnimationControl {
  /**动画精灵 */
  aniSprite: any;
  /**
   * 播放动画
   * @param action
   * @param keyframeHandler
   * @param aniCmpHandler
   */
  play(action: IAnimation, keyframeHandler?, aniCmpHandler?);
  /**获取当前帧索引 */
  getPlayIndex(): number;
  /**停止动画 */
  stop();
  /**
   * 加载动画资源
   * @param caller 调用者
   * @param callback 加载完毕回调
   */
  LoadSource(caller?: any, callback?: Function);
  /**更新状态*/
  update();
  /**克隆对象 */
  clone(): IAnimationControl;
  /**设置位置 */
  pos(x: number, y: number, z?: number);
  /**设置动画角度 */
  setAngle(_angle: number);
  /**设置透明值 */
  setAlpha(flag: Boolean, alpha?: number);
  /**设置大小 */
  setSize(x: number, y: number, z?: number);
  /**销毁对象 */
  destroy();
}
